<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

// @TODO: Get results only where they are set to active

class Vattu_model extends CI_Model
{
	protected $_table;	    
	/**
	 * Constructor
	 *
	 * @access	public
	 */ 
	function __construct()
	{
		parent::__construct();
		$this->load->helper('date');
		date_default_timezone_set('Asia/Ho_Chi_Minh');
	}
	
	////////////////////////////////
	function get_report_custom($duration=null)
	{
		/* if($duration == null) $duration = 'THISMONTH';
		switch ($duration)
		{
			case 'THISMONTH':
				return $this->get_report_custom_time('2014-08-01','2014-11-01'); break;
			case 'THISYEAR':
				return $this->get_report_custom_time(); break;
			default :
				$tmp = explode("_",$duration);
				return $this->get_report_custom_time($tmp[1],$tmp[2]); break;
		} */
		
		$tmp = explode("_",$duration);
		$this->get_report_custom_time($tmp[1],$tmp[2]);
	}
	function get_report_custom_times($bdate,$edate)
	{
		$this->db->select('o_hang_muc.*');
		$this->db->from('o_hang_muc');
		$this->db->where('o_hang_muc.status',1);
		$query = $this->db->get();
		$return = $query->result_array();
		$tmp = array();
		//var_dump($return);exit();
		foreach($return as $item)
		{
			//$item['chungtus'] = $this->get_report_tong_hop_c_xe_hang_muc($item['id'],$bdate,$edate);
			//$item['tong'] = $this->tinh_tong_ps_theo_thang_theo_hang_muc($item['id']);
			//$item['tongtt'] = $this->tinh_tong_tien_ps_theo_thang_theo_hang_muc($item['id']);
			$tmp[] = $item;
		}
	
		return $tmp;
	}

	
	function get_report_custom_time_or_and_kho($duration,$kho)
	{
	
		$tmp = explode("_",$duration);
		$bdate = $tmp[1];
		$edate = $tmp[2];
	
		$bdatet = str_replace('/', '-', $bdate);
		$edatet = str_replace('/', '-', $edate);
		$ngaybd = date('Y-m-d', strtotime($bdatet));
		$ngaykt = date('Y-m-d', strtotime($edatet));
		$the_first_day_of_month = date('Y-m-01', strtotime($bdatet));
		
		$this->db->select('vt_kho_item.item_id, vt_item.code, vt_item.name, dvt.name as dvt');
		$this->db->from('vt_kho_item','vt_item');
		$this->db->join('vt_item','vt_item.id=vt_kho_item.item_id');
		$this->db->join('dvt','dvt.id=vt_item.id_dvt');
		$this->db->order_by('vt_item.name','asc');
		if($kho != 0)
		{
			$this->db->where('vt_kho_item.kho_id',$kho);
		}
		$this->db->where('vt_kho_item.status !=',0);
	
		$query = $this->db->get();
		$rss =  $query->result_array();
		$item_array = array();
		foreach($rss as $ok)
		{
			$item_array[] = $ok['item_id'];
		}
	
	
		$sum = $this->get_total_ps_custom_month($item_array,$ngaybd,$ngaykt);
		$sddk = $this->get_sddk_custom_start_month($item_array,$ngaybd);
		$ps = $this->get_total_ps_custom_month($item_array,$the_first_day_of_month,$ngaybd);
			
		$ret = array();
		$sums = array();
		$sddks = array();
		$pss = array();
	
		foreach ($rss as $rs)
		{
			$ret[$rs['item_id']] = $rs;
		}
	
		foreach ($sum as $rs)
		{
			$sums[$rs['item_id']] = $rs;
		}
		foreach ($sddk as $rs)
		{
			$sddks[$rs['item_id']] = $rs; //khong dinh nghia
		}
		foreach ($ps as $rs)
		{
			$pss[$rs['item_id']] = $rs;
		}
	
		// Khoi tao gia trij cho $ret
	
		foreach($ret as $key=>$value)
		{
			$ret[$key]['sddk'] = 0;
			$ret[$key]['ps_tang'] = 0;
			$ret[$key]['ps_giam'] = 0;
		}
	
		foreach($ret as $key=>$value)
		{
			if(isset($sddks[$key]))
			{
				$ret[$key]['sddk'] = $sddks[$key]['sddk'];
			}
			if(isset($sums[$key]))
			{
				$ret[$key]['ps_tang'] = $sums[$key]['tang'];
				$ret[$key]['ps_giam'] = $sums[$key]['giam'];
			}
		}
		// Tinhs laij so du dau ky
	
		foreach($ret as $key=>$value)
		{
			if(isset($pss[$key]))
			{
				$ret[$key]['sddk'] = $ret[$key]['sddk'] + $pss[$key][tang] - $pss[$key]['giam'];
			}
		}
		return $ret;
	}
	
	function get_report_custom_time_by_and_kho_and_mon($duration,$kho,$mon)
	{
	
		$tmp = explode("_",$duration);
		$bdate = $tmp[1];
		$edate = $tmp[2];
	
		$bdatet = str_replace('/', '-', $bdate);
		$edatet = str_replace('/', '-', $edate);
		$ngaybd = date('Y-m-d', strtotime($bdatet));
		$ngaykt = date('Y-m-d', strtotime($edatet));
	
		//lấy tất cả vật tư có trong kho đã được dùng ở một môn học cụ thể
		$this->db->select('vt_kho_item.item_id, vt_item.code, vt_item.name, dvt.name as dvt');
		$this->db->from('vt_kho_item','vt_item');
		$this->db->join('vt_item','vt_item.id=vt_kho_item.item_id');
		$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id=vt_kho_item.item_id');
		$this->db->join('vt_chung_tu','vt_chung_tu.id=vt_chung_tu_item.chung_tu_id');
		$this->db->join('dvt','dvt.id=vt_item.id_dvt');
		$this->db->order_by('vt_item.name','asc');
		$this->db->where('vt_chung_tu.type',2);
		if($kho != 0)
		{
			$this->db->where('vt_chung_tu.id_kho',$kho);
		}
		if($mon != 0)
		{
			$this->db->where('vt_chung_tu.id_monhoc',$mon);
		}
		
		
		$query = $this->db->get();
		$rss =  $query->result_array();
	
		$ret = array();
		foreach($rss as $rs)
		{
			//Lấy tổng phát sinh tăng giảm 1 vật tư trong khoảng thời gian đã chọn
			$sum = $this->get_total_ps_custom_month($rs['item_id'],$ngaybd,$ngaykt);
	
			if($sum)
			{
				if($sum[0]['giam'] == null) $sum[0]['giam'] = 0;
				$rs['ps_giam'] = $sum[0]['giam'];
			}
			$ret[] = $rs;
		}
		//var_dump($ret); exit();
		return $ret;
	}
	
	function get_report_custom_time_by_and_kho_and_mon_and_giaovien($duration,$kho,$mon,$giaovien)
	{
	
		$tmp = explode("_",$duration);
		$bdate = $tmp[1];
		$edate = $tmp[2];
	
		$bdatet = str_replace('/', '-', $bdate);
		$edatet = str_replace('/', '-', $edate);
		$ngaybd = date('Y-m-d', strtotime($bdatet));
		$ngaykt = date('Y-m-d', strtotime($edatet));
	
		//lấy tất cả vật tư có trong kho đã được dùng ở một môn học cụ thể
		$this->db->select('vt_kho_item.item_id, vt_item.code, vt_item.name, dvt.name as dvt');
		$this->db->from('vt_kho_item','vt_item');
		$this->db->join('vt_item','vt_item.id=vt_kho_item.item_id');
		$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id=vt_kho_item.item_id');
		$this->db->join('vt_chung_tu','vt_chung_tu.id=vt_chung_tu_item.chung_tu_id');
		$this->db->join('dvt','dvt.id=vt_item.id_dvt');
		$this->db->order_by('vt_item.name','asc');
		$this->db->where('vt_chung_tu.type',2);
		if($kho != 0)
		{
			$this->db->where('vt_chung_tu.id_kho',$kho);
		}
		if($mon != 0)
		{
			$this->db->where('vt_chung_tu.id_monhoc',$mon);
		}
		$this->db->where('vt_chung_tu.object_to_id',$giaovien);
		
		$query = $this->db->get();
		$rss =  $query->result_array();
	
		$ret = array();
		foreach($rss as $rs)
		{
			//Lấy tổng phát sinh tăng giảm 1 vật tư trong khoảng thời gian đã chọn
			$sum = $this->get_total_ps_custom_month($rs['item_id'],$ngaybd,$ngaykt);
	
			if($sum)
			{
				if($sum[0]['giam'] == null) $sum[0]['giam'] = 0;
				$rs['ps_giam'] = $sum[0]['giam'];
			}
			$ret[] = $rs;
		}
		//var_dump($ret); exit();
		return $ret;
	}
	
	function get_report_custom_time_pro($duration,$kho,$mon)
	{
	
		$tmp = explode("_",$duration);
		$bdate = $tmp[1];
		$edate = $tmp[2];
	
		$bdatet = str_replace('/', '-', $bdate);
		$edatet = str_replace('/', '-', $edate);
		$ngaybd = date('Y-m-d', strtotime($bdatet));
		$ngaykt = date('Y-m-d', strtotime($edatet));
		$the_first_day_of_month = date('Y-m-01', strtotime($bdatet));
		if($kho !=0)
		{
			if($mon !=0)
			{//lấy tất cả vật tư có trong kho đã được dùng ở một môn học cụ thể
				$this->db->select('vt_tong_hop.*, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_tong_hop','vt_chung_tu','vt_chung_tu_item','vt_item','dvt');
				
				$this->db->join('vt_item','vt_item.id=vt_tong_hop.item_id');
				$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id=vt_tong_hop.item_id');	
				$this->db->join('vt_chung_tu','vt_chung_tu.id=vt_chung_tu_item.chung_tu_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
				
				$this->db->group_by('vt_tong_hop.item_id');
				$this->db->where('vt_chung_tu.id_monhoc',$mon);
				$this->db->where('vt_chung_tu.id_kho',$kho);
				$this->db->where('vt_chung_tu.type',2);
			}
			else { //lấy tất cả vật tư có trong 1 kho cụ thể đã lựa chọn				
				$this->db->select('vt_kho_item.item_id, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_kho_item','vt_item');
				$this->db->join('vt_item','vt_item.id=vt_kho_item.item_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
				$this->db->where('vt_kho_item.kho_id',$kho);
				$this->db->where('vt_kho_item.status !=',0);
			}
		}
		else {
			if($mon !=0)
			{
				$this->db->select('vt_tong_hop.*, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_tong_hop','vt_chung_tu','vt_chung_tu_item','vt_item','dvt');
				
				$this->db->join('vt_item','vt_item.id=vt_tong_hop.item_id');
				$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id=vt_tong_hop.item_id');	
				$this->db->join('vt_chung_tu','vt_chung_tu.id=vt_chung_tu_item.chung_tu_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
				
				$this->db->group_by('vt_tong_hop.item_id');
				$this->db->where('vt_chung_tu.id_monhoc',$mon);
				$this->db->where('vt_chung_tu.type',2);
			}
			else {// lấy báo cáo tùy chọn: lấy tất cả vật tư có trong tất cả các kho
				$this->db->select('vt_kho_item.item_id, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_kho_item','vt_item');
				$this->db->join('vt_item','vt_item.id=vt_kho_item.item_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
				$this->db->where('vt_kho_item.status !=',0);
			}
		}
		
		$query = $this->db->get();
		$rss =  $query->result_array();
		$item_array = array();
		foreach($rss as $ok)
		{
			$item_array[] = $ok['item_id'];
		}
		
		
		$sum = $this->get_total_ps_custom_month($item_array,$ngaybd,$ngaykt);
		$sddk = $this->get_sddk_custom_start_month($item_array,$ngaybd);
		//var_dump($sddk); exit();
		$ps = $this->get_total_ps_custom_month($item_array,$the_first_day_of_month,$ngaybd);
			
		$ret = array();
		$sums = array();
		$sddks = array();
		$pss = array();
		
		foreach ($rss as $rs)
		{
			$ret[$rs['item_id']] = $rs;
		}	
		
		foreach ($sum as $rs)
		{
			$sums[$rs['item_id']] = $rs;
		}
		foreach ($sddk as $rs)
		{
			$sddks[$rs['item_id']] = $rs; //khong dinh nghia 
		}
		foreach ($ps as $rs)
		{
			$pss[$rs['item_id']] = $rs;
		}
		
		// Khoi tao gia trij cho $ret
		
		foreach($ret as $key=>$value)
		{
			$ret[$key]['sddk'] = 0;
			$ret[$key]['ps_tang'] = 0;
			$ret[$key]['ps_giam'] = 0;
		}
		
		foreach($ret as $key=>$value)
		{
			if(isset($sddks[$key]))
			{
				$ret[$key]['sddk'] = $sddks[$key]['sddk'];
			}
			if(isset($sums[$key]))
			{
				$ret[$key]['ps_tang'] = $sums[$key]['tang'];
				$ret[$key]['ps_giam'] = $sums[$key]['giam'];
			}
		}
		// Tinhs laij so du dau ky
		
		foreach($ret as $key=>$value)
		{
			if(isset($pss[$key]))
			{
				$ret[$key]['sddk'] = $ret[$key]['sddk'] + $pss[$key][tang] - $pss[$key]['giam']; 
			}
		}
		return $ret;
		
	}
	
	// Lấy phát sinh tăng giảm trong khoảng thời gian
	function get_total_ps_custom_month($item_arr,$bdate,$edate)
	{
		$this->db->select('vt_chung_tu_item.item_id, SUM(ps_tang) as tang, SUM(ps_giam) as giam');
		$this->db->from('vt_chung_tu_item', 'vt_chung_tu');
		$this->db->join('vt_chung_tu','vt_chung_tu.id=vt_chung_tu_item.chung_tu_id');
		$this->db->group_by('vt_chung_tu_item.item_id');
		$this->db->where_in('vt_chung_tu_item.item_id', $item_arr);
		$this->db->where('vt_chung_tu.status',1);
		$this->db->where('vt_chung_tu.modified_date >= ',$bdate);
		$this->db->where('vt_chung_tu.modified_date <',$edate);
		
		$query = $this->db->get();
		return $query->result_array();
	}
	
	
	// Lấy số dư đầu kỳ của vật tư trong khoảng thời gian
	function get_sddk_custom_start_month($item_arr,$bdate)
	{
		$this->db->select('sddk, item_id');
		$this->db->from('vt_tong_hop');
		$this->db->group_by('item_id');
		$this->db->where_in('item_id', $item_arr);
		$this->db->where('MONTH(created_date)', date('m',strtotime($bdate)));
		$this->db->where('YEAR(created_date)', date('Y',strtotime($bdate)));
	
		$query = $this->db->get();
		return $query->result_array();
	}
	
	function get_report_custom_time_pro_bk($duration,$kho,$mon)
	{
	
		$tmp = explode("_",$duration);
		$bdate = $tmp[1];
		$edate = $tmp[2];
	
		$bdatet = str_replace('/', '-', $bdate);
		$edatet = str_replace('/', '-', $edate);
		$ngaybd = date('Y-m-d', strtotime($bdatet));
		$ngaykt = date('Y-m-d', strtotime($edatet));
	
		if($kho !=0)
		{
			if($mon !=0)
			{//lấy tất cả vật tư có trong kho đã được dùng ở một môn học cụ thể
				$this->db->select('vt_tong_hop.*, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_tong_hop','vt_chung_tu','vt_chung_tu_item','vt_item','dvt');
	
				$this->db->join('vt_item','vt_item.id=vt_tong_hop.item_id');
				$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id=vt_tong_hop.item_id');
				$this->db->join('vt_chung_tu','vt_chung_tu.id=vt_chung_tu_item.chung_tu_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
	
				$this->db->group_by('vt_tong_hop.item_id');
				$this->db->where('vt_chung_tu.id_monhoc',$mon);
				$this->db->where('vt_chung_tu.id_kho',$kho);
				$this->db->where('vt_chung_tu.type',2);
			}
			else { //lấy tất cả vật tư có trong 1 kho cụ thể đã lựa chọn
				$this->db->select('vt_tong_hop.*, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_tong_hop','vt_item','vt_kho_item');
				$this->db->join('vt_item','vt_item.id=vt_tong_hop.item_id');
				$this->db->join('vt_kho_item','vt_kho_item.item_id=vt_tong_hop.item_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
				$this->db->group_by('vt_tong_hop.item_id');
				$this->db->where('vt_kho_item.kho_id',$kho);
				$this->db->where('vt_kho_item.status !=',0);
			}
		}
		else {
			if($mon !=0)
			{
				$this->db->select('vt_tong_hop.*, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_tong_hop','vt_chung_tu','vt_chung_tu_item','vt_item','dvt');
	
				$this->db->join('vt_item','vt_item.id=vt_tong_hop.item_id');
				$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id=vt_tong_hop.item_id');
				$this->db->join('vt_chung_tu','vt_chung_tu.id=vt_chung_tu_item.chung_tu_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
	
				$this->db->group_by('vt_tong_hop.item_id');
				$this->db->where('vt_chung_tu.id_monhoc',$mon);
				$this->db->where('vt_chung_tu.type',2);
			}
			else {// lấy báo cáo tùy chọn: lấy tất cả vật tư có trong tất cả các kho
				$this->db->select('vt_tong_hop.*, vt_item.code, vt_item.name, dvt.name as dvt');
				$this->db->from('vt_tong_hop','vt_item');
				$this->db->join('vt_item','vt_item.id=vt_tong_hop.item_id');
				$this->db->join('dvt','dvt.id=vt_item.id_dvt');
				$this->db->group_by('vt_tong_hop.item_id');
			}
		}
		$query = $this->db->get();
		$rss =  $query->result_array();
	
		$ret = array();
		foreach($rss as $rs)
		{
			//Lấy tổng phát sinh tăng giảm 1 vật tư trong khoảng thời gian đã chọn
			$sum = $this->get_total_ps_custom_month($rs['item_id'],$ngaybd,$ngaykt);
	
			//Lấy số dư đầu kỳ của vật tư tại thời điểm tháng bắt đầu
			$sddk = $this->get_sddk_custom_start_month($rs['item_id'],$ngaybd);
	
			//var_dump($sddk); exit();
			if($sddk)
			{
				if($sddk[0]['sddk'] == null) $sddk[0]['sddk'] = 0;
				$rs['sddk'] = $sddk[0]['sddk'];
			}
			if($sum)
			{
				if($sum[0]['tang'] == null) $sum[0]['tang'] = 0;
				if($sum[0]['giam'] == null) $sum[0]['giam'] = 0;
				$rs['ps_tang'] = $sum[0]['tang'];
				$rs['ps_giam'] = $sum[0]['giam'];
			}
			$ret[] = $rs;
		}
	
		return $ret;
	}
	
	// Kiểm tra tồn đầu kỳ của tháng trước
	function get_report_previous_month()
	{
		$this->db->select('*');
		$this->db->from('vt_tong_hop');
		if(date('m')==1)
		{
			$this->db->where('MONTH(created_date)', 12);
			$this->db->where('YEAR(created_date)',date('Y')-1);
		}
		else {
			$this->db->where('MONTH(created_date)',date('m')-1);
			$this->db->where('YEAR(created_date)',date('Y'));
		}
		
		$query = $this->db->get();
		return $query->result_array();
	
	}
	
	// Lấy nhập trong kỳ và xuất trong kỳ của tháng này
	function item_report_this_month()
	{
		$this->db->select('vt_tong_hop.*, vt_item.code, vt_item.name, dvt.name as dvt');
		$this->db->from('vt_tong_hop','vt_item');
		$this->db->join('vt_item','vt_item.id=vt_tong_hop.item_id');
		$this->db->join('dvt','dvt.id=vt_item.id_dvt');
		$this->db->where('MONTH(vt_tong_hop.created_date)',date('m'));
		$this->db->where('YEAR(vt_tong_hop.created_date)',date('Y'));
		$this->db->order_by('vt_item.name','asc');
		$query = $this->db->get();
		$rss =  $query->result_array();
		
		$ret = array();
		foreach($rss as $rs)
		{
			$sum = $this->get_total_ps_this_month($rs['item_id']);
			if($sum)
			{
				if($sum[0]['tang'] == null) $sum[0]['tang'] = 0;
				if($sum[0]['giam'] == null) $sum[0]['giam'] = 0;
				$rs['ps_tang'] = $sum[0]['tang'];
				$rs['ps_giam'] = $sum[0]['giam'];
			}
			$ret[] = $rs;
		}
		return $ret;
	}
	
	function create_report_tong_hop()
	{
		$get_item_report_this_month = $this->item_report_this_month();
		
		if($get_item_report_this_month)
		{
			return false;
		}
		
		// Kiểm tra xem bảng tổng hợp đã có báo cáo của tháng trước chưa
		$get_report_previous_month = $this->get_report_previous_month();
		$get_all_sddk_in_kho = $this->get_all_sddk_in_kho();
		
		/*Nếu có chưa có dữ liệu báo cáo của tháng trước thì tiến hành
		*thêm dữ liệu tháng hiện thời vào bảng tổng hợp
		*/
		if($get_report_previous_month==null)
		{
			// Với mỗi 1 vật tư tiến hành kiểm tra và lấy số dư đầu kỳ trong kho
			foreach ($get_all_sddk_in_kho as $sddk)
			{
				$this->add_item_report($sddk['item_id'],$sddk['sodudauky'],0,0);
			}
			
			return true;
		}
		else {
			
			// Ngược lại khi đã có báo cáo của tháng trước
			// Với mỗi 1 vật tư tiến hành kiểm tra và lấy số dư đầu kỳ trong kho tháng trước
			// cập nhật số dư cuối kỳ = sddk+ps tang - ps giảm
			// cập nhật ps tăng, ps giảm, sdck vào tong hop $pre_report
			$newrows = array();
			$listitem = array();
			$listpbc = array();
			foreach ($get_all_sddk_in_kho as $iteminkho)
			{
				foreach ($get_report_previous_month as $pre_report)
				{	
					$flag = 0;
					if($pre_report['item_id']==$iteminkho['item_id'])
					{
						// Lấy tổng số phát sinh tăng giảm từ bảng chứng từ item
						$sum = $this->get_total_ps_previous_month($pre_report['item_id']);
						if($sum[0]['tang'] == null) $sum[0]['tang'] = 0;
						if($sum[0]['giam'] == null) $sum[0]['giam'] = 0;		
						$pre_report['sdck'] = $pre_report['sddk']+$sum[0]['tang']- $sum[0]['giam'];
						
						// Cập nhật số dư đầu kỳ của tháng trước
						$this->update_sdck_to_previous_month($pre_report['id'], $pre_report['sdck']);
						$this->add_item_report($pre_report['item_id'],$pre_report['sdck'],$sum[0]['tang'],$sum[0]['giam']);
					}
				}
				$listitem[$iteminkho['item_id']] = $iteminkho;
			}
			
			foreach ($get_report_previous_month as $pre_report)
			{
				$listpbc[$pre_report['item_id']] = $pre_report;
			}
			
			$newrows = array_diff_key($listitem, $listpbc);
			
			// Nếu có danh mục mới thêm vào, cần lấy giá trị khởi tạo
			if($newrows)
			{
				$get_all_sddk_in_kho = $this->get_all_sddk_in_kho();
				foreach($get_all_sddk_in_kho as $j)
				{
						
					foreach($newrows as $item)
					{
			
						if($j['item_id'] == $item['item_id'])
						{
							if($j['status'] == 1)
							{
								$this->add_item_report($item['item_id'],$j['sodudauky'],0,0);
							}
							else {
								$this->add_item_report($item['item_id'],0,0,0);
							}
						}
							
					}
				}
			}
			
			
		}
		return true;
	}
	
	//Thêm vật tư vào bảng báo cáo tổng hợp: id của vật tư, sddk
	function add_item_report($item_id, $sddk, $ps_tang, $ps_giam)
	{
		$data = array(
				'item_id' => $item_id,
				'chung_tu_id' => 0,
				'sddk'		=> $sddk,
				'sdck' => 0,
				'ps_tang' => $ps_tang,
				'ps_giam' => $ps_giam,
				'price' => 0,
				'created_date' => date('Y-m-d H:i:s'),
		);
		$this->db->set($data);
		$this->db->insert('vt_tong_hop');
	}
	
	//Lấy số dư đầu kỳ trong kho
	function get_all_sddk_in_kho()
	{
		$this->db->select('item_id, SUM(sddk) as sodudauky, status');
		
		$this->db->from('vt_kho_item');
		$this->db->where('status !=',0);
		$this->db->group_by('item_id');
		$query = $this->db->get();
		return $query->result_array();
	}
	
	// Lấy tồn phát sinh tăng giảm trong tháng trước
	function get_total_ps_previous_month($item_id)
	{
		$this->db->select('SUM(ps_tang) as tang, SUM(ps_giam) as giam');
		$this->db->from('vt_chung_tu_item');
		$this->db->where('vt_chung_tu_item.item_id',$item_id);
		if(date('m') -1 == 0 )
		{
			$this->db->where('YEAR(vt_chung_tu_item.created_date)',date('Y')-1);
			$this->db->where('MONTH(vt_chung_tu_item.created_date)',date('m'));
		}
		else
		{
			$this->db->where('YEAR(vt_chung_tu_item.created_date)',date('Y'));
			$this->db->where('MONTH(vt_chung_tu_item.created_date)',date('m')-1);
		}
		$query = $this->db->get();
		return $query->result_array();
	}
	
	// Lấy tồn phát sinh tăng giảm trong tháng hiện tại
	function get_total_ps_this_month($item_id)
	{
		$this->db->select('SUM(ps_tang) as tang, SUM(ps_giam) as giam');
		$this->db->from('vt_chung_tu_item');
		$this->db->where('vt_chung_tu_item.item_id',$item_id);
		$this->db->where('MONTH(vt_chung_tu_item.created_date)',date('m'));
		$this->db->where('YEAR(vt_chung_tu_item.created_date)',date('Y'));

		$query = $this->db->get();
		return $query->result_array();
	}
	
	function update_sdck_to_previous_month($tonghop_id,$sdck)
	{
	
		$fields = array(
				'sdck'			=> $sdck,
		);
	
		$this->db->set($fields);
		$this->db->where('id', $tonghop_id);
		return $this->db->update('vt_tong_hop');
	}
	
	/*
	 *  Lấy danh sách cá item trong danh mục
	 */
	public function get_vattus_by_category($id)
	{
		$this->db->select('vt_item.*');
		$this->db->from('vt_item');
		$this->db->where('category_id',$id);
		$this->db->where('status',1);
		
		$query = $this->db->get();
		return $query->result_array();
	}
	/**
	 * Tạo chức năng Report
	 */
	public function get_items_report($limit, $start)
	{
		$this->db->select('vt_item.*, dvt.name as dvt');
		$this->db->from('vt_item');
		$this->db->join('dvt', 'dvt.id = vt_item.id_dvt', 'left');
		$this->db->order_by('id','desc');
		$this->db->limit($limit, $start);
		$this->db->where('vt_item.deleted',0);
		$this->db->where('vt_item.status',1);
		$query = $this->db->get();		
		$rs = $query->result_array();
		$return = array();
		if($rs != null)
		{
			$ItemIds = array();
			foreach ($rs as $item)
			{
				$ItemIds[] = $item['id'];
			}
			$total_nhaps = $this->get_total_nhap($ItemIds);
			$total_xuats = $this->get_total_xuat($ItemIds);
			//var_dump($total_nhaps);
			foreach($rs  as $item)
			{
				foreach($total_nhaps as $nhap)
				{
					if($nhap['item_id'] == $item["id"])
					{
						$item['nhaptk'] = $nhap['total'];
					} 
					elseif(!isset($item['nhaptk'])) {
						$item['nhaptk'] = 0;
					}
				}
				foreach ($total_xuats as $xuat)
				{
					if($xuat['item_id'] == $item["id"])
					{
						$item['xuattk'] = $xuat['total'];
					}
					elseif(!isset($item['xuattk'])) {
						$item['xuattk'] = 0;
					}
				}
				$item['tondk'] = 0;
				$item['tonck'] = $item['tondk'] + $item['nhaptk'] - $item['xuattk'];
				
				$return[] = $item;
			}
			//var_dump($return);
			return $return;
		}
		else {
			return null;
		}
	}
	
	public function get_total_nhap($Itemids)
	{
		$str = implode(',',$Itemids);
		$sql = "SELECT SUM(ps_tang) as total, vt_chung_tu.*,vt_chung_tu_item.item_id
FROM vt_chung_tu_item,vt_chung_tu
where ( vt_chung_tu_item.item_id IN(".$str.") AND vt_chung_tu_item.chung_tu_id = vt_chung_tu.id AND vt_chung_tu.`type` IN (1) AND vt_chung_tu.status = 1 AND MONTH(vt_chung_tu.created_date) = MONTH(NOW()))
Group BY vt_chung_tu_item.item_id";
		//echo $sql;
		$query = $this->db->query($sql);
		//$query = $this->db->get();
		return $query->result_array();
	}
	public function get_total_xuat($Itemids)
	{
		$str = implode(',',$Itemids);
		$sql = "SELECT SUM(ps_giam) as total, vt_chung_tu.*,vt_chung_tu_item.item_id
FROM vt_chung_tu_item,vt_chung_tu
where ( vt_chung_tu_item.item_id IN(".$str.") AND vt_chung_tu_item.chung_tu_id = vt_chung_tu.id AND vt_chung_tu.`type` IN (2,3) AND vt_chung_tu.status = 1 AND MONTH(vt_chung_tu.created_date) = MONTH(NOW()))
Group BY vt_chung_tu_item.item_id";
		$query = $this->db->query($sql);
		//$query = $this->db->get();
		return $query->result_array();
	}
	/**
	 * Lấy danh sách khoa
	 */
	function get_tenkhoa()
	{
		$this->db->select('id, makhoa, tenkhoa');
		$this->db->from('khoa');
		$query = $this->db->get();
		return $query->result_array();
	}	
	/**
	 * 
	 * @param unknown $id
	 * @return unknown
	 */
	public function get_total_bybill($id)
	{
		$arr1 = $this->get_bill_export_detail_by_id($id,1);
		$total = 0;
		foreach($arr1 as $item)
		{
			$total = $total + $item["ps_giam"]*$item['price'];
		}
		return $total;
	}
	// Lây vật danh mục vật tư của phiễu xuất
	// Hàm nay chỉ để hiển thị phiếu xuất
	public function get_bill_byId($id)
	{
		$arr = array();
		$arr1 = array(); // vật tu tieu hao 1 lan
		$arr2 = array(); // trang thiet bi
		$arr3 = array(); // tieu hao nhieu lan
		$arr4 = array(); // phe lieu 1
		$arr5 = array(); // phe hieu 2
		
		$arr1 = $this->get_bill_export_detail_by_id($id,1);
		$arr2 = $this->get_bill_export_detail_by_id($id,2);
		$arr3 = $this->get_bill_export_detail_by_id($id,3);
		$arr4 = $this->get_bill_export_detail_by_id($id,4);
		//$arr5 = $this->get_bill_export_detail_by_id($id,5);
		$arr[1] = $arr1;
		$arr[2] = $arr2;
		$arr[3] = $arr3;
		$arr[4] = $arr4;
		//$arr[5] = $arr1;
		return $arr;
		
	}
	public function get_bill_export_detail_by_id($id,$type='')
	{
		$this->db->select('vt_item.name as itemname, vt_item.code,vt_chung_tu_item.item_id,vt_chung_tu_item.ps_giam, vt_chung_tu_item.price, dvt.name as dvt');
		$this->db->from('vt_item','vt_chung_tu_item','vt_chung_tu','dvt');
		$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id = vt_item.id');
		$this->db->join('vt_chung_tu','vt_chung_tu.id = vt_chung_tu_item.chung_tu_id');
		$this->db->join('dvt','dvt.id = vt_item.id_dvt');
		$this->db->where('vt_chung_tu.id',$id);
		if($type != '')
		{
			$this->db->where('vt_item.type',$type);
		}
		$query = $this->db->get();
		return $query->result_array();
	}
	// Xuất vật tư 
	public function add_bill_export($results)
	{
		$this->load->helper('date');
		$date3 = str_replace('/', '-', $this->input->post('datetime'));
		$real_date = date('Y-m-d', strtotime($date3));
		$fields = array(
				'user_id'		=> $this->user->id,
				'id_kho'		=> $this->input->post('kho'),
				'type'			=> 2,
				'kind'			=> 0,
				'code'			=> '',
				'object_to_id'  => $this->input->post('giaovien'),
				'created_date'	=> date('Y-m-d H:s:i'),
				'status'		=> 0,
				'id_lophoc'		=> $this->input->post('lophoc'),
				'id_monhoc'		=> $this->input->post('monhoc'),
				'content'    	=> $this->input->post('content'),
				'name'    		=> $this->input->post('name'),
				'real_date' => $real_date
		);
		
		$this->db->set($fields);
		$this->db->insert('vt_chung_tu');
		$nhapxuat_id = $this->db->insert_id();
	
		//auto code order exmport
		$mat19 = 'HDVT-'.date('y').'-';
		$ordercode = $this->auto_code_vattu($nhapxuat_id);
			
		$data2 = array(
				'code' => $mat19.$ordercode,
		);
			
		$this->db->set($data2);
		$this->db->where('id', $nhapxuat_id);
		$this->db->update('vt_chung_tu');
	
	
		// Thực hiện add to hoa don
		foreach ($results as $result)
		{
			$soluong = $this->input->post('soluong_'.$result);
			$dongia = $this->input->post('dongia_'.$result);
			$prop = $this->input->post('prop_'.$result);
			// fix lỗi khi giá có dấu ,
			// định dạng lại giá bỏ dấu ,
			$dongia = str_replace(',','',$dongia);	
			$this->item_detail($nhapxuat_id, $soluong, $dongia, $result,2,$prop); //2 ở đây là type dành cho phiếu xuất, 1 là nhập
				
		}
		return $nhapxuat_id;
	
	}
	function ajaxget_phieuxuat_bygiaovien($gv_id)
	{
		$this->db->select('vt_chung_tu.*');
		$this->db->from('vt_chung_tu');
		$this->db->where('object_to_id',$gv_id);
		$this->db->where('type',2);
		$query = $this->db->get();
		$lophocs = array();
		if($query->result()){
			$lophocs[0] = "Chọn phiếu...";
			foreach ($query->result() as $city) {
				//$item['name'] = $city->tengv;
				//$item['amount'] = $city->amount;
				$lophocs[$city->id] = $city->code;
			}
			return $lophocs;
		}
		else
		{
			return FALSE;
		}
	}
	function ajaxget_phieuxuat_bylop_mon($mon_id,$lop_id)
	{
		$this->db->select('vt_chung_tu.*');
		$this->db->from('vt_chung_tu');
		$this->db->where('id_monhoc',$mon_id);
		$this->db->where('id_lophoc',$lop_id);
		$query = $this->db->get();
		$lophocs = array();
		if($query->result()){
			foreach ($query->result() as $city) {
				//$item['name'] = $city->tengv;
				//$item['amount'] = $city->amount;
				$lophocs[$city->id] = $city->code;
			}
			return $lophocs;
		}
		else
		{
			return FALSE;
		}
	}
	function ajaxget_giaovien_bykhoa($id_khoa)
	{
		$this->db->select('giaovien.*');
		$this->db->from('giaovien');
		$this->db->where('id_khoa',$id_khoa);
		$query = $this->db->get();
		$lophocs = array();
		if($query->result()){
			$lophocs[0] = "Chọn Giáo viên ...";
			foreach ($query->result() as $city) {
				$lophocs[$city->id] = $city->tengv;
			}
			return $lophocs;
		}
		else
		{
			return FALSE;
		}
	}
	/*
	 * Lấy chi tiết định mức sử dụng chuyển JSON data
	*/
	function ajaxget_item_by_kho($kho_id)
	{
		$character = array('"', '.',',');
		$newcharacter   = array("", "","");
		
		$this->db->select('vt_kho_item.id, vt_kho_item.item_id, vt_kho_item.price, vt_kho_item.amount, vt_kho_item.price, vt_item.name as itemname, vt_item.code, vt_item.type, dvt.name as donvitinh');
		$this->db->from('vt_kho_item','vt_item','dvt');
		$this->db->join('vt_item','vt_item.id = vt_kho_item.item_id');
		$this->db->join('dvt','dvt.id = vt_item.id_dvt');
		$this->db->where('vt_kho_item.kho_id',$kho_id);
		$this->db->where('vt_kho_item.status !=', 0);
		$query = $this->db->get();
		$items = array();
		if($query->result()){
			foreach ($query->result() as $city) {
				$item['id'] = $city->item_id;
				$item['type'] = $city->type;
				$item['name'] = str_replace($character,$newcharacter,$city->itemname);
				$item['amount'] = $city->amount;
				$item['price'] = number_format($city->price);
				$item['dvt'] = $city->donvitinh;
				$items[$city->item_id] = $item;				
			}
			return $items;
		}
		else
		{
			return FALSE;
		}
	}
	/*
	 * Lấy giá của item (giá mới nhất - giá của lần nhập cuối cùng)
	 */
	function get_price_theItem($item_id)
	{
		$this->db->select('vt_chung_tu_item.*');
		$this->db->from('vt_chung_tu_item','vt_chung_tu');
		$this->db->join('vt_chung_tu','vt_chung_tu.id = vt_chung_tu_item.chung_tu_id');
		$this->db->order_by('vt_chung_tu_item.id','desc');
		$this->db->where('item_id',$item_id);
		$this->db->where('vt_chung_tu.type',1);
		$this->db->where('vt_chung_tu.status',1);
		$query = $this->db->get();
		$arr = $query->result_array();
		if($arr != null)
		{
			return $arr[0]['price'];
		}
		else
		{
			return 0;
		}
	}
	public function ajax_get_bill_import_detail_by_id($id)
	{
		$this->db->select('vt_item.name as itemname, vt_item.code, vt_item.id_dvt, dvt.name, vt_chung_tu_item.item_id,vt_chung_tu_item.ps_giam, vt_chung_tu_item.price');
		$this->db->from('vt_item','vt_chung_tu_item','vt_chung_tu','dvt');
		$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id = vt_item.id');
		$this->db->join('vt_chung_tu','vt_chung_tu.id = vt_chung_tu_item.chung_tu_id');
		$this->db->join('dvt','dvt.id = vt_item.id_dvt');
		$this->db->where('vt_chung_tu.id',$id);
		$this->db->where_not_in('vt_item.type',1);
		$query = $this->db->get();
		//return $query->result_array();
		$lophocs = array();
		if($query->result()){
			foreach ($query->result() as $city) {
				$item['name'] = $city->itemname;
				$item['dvt'] = $city->name;
				$item['id_dvt'] = $city->id_dvt;
				$item['amount'] = $city->ps_giam;
				$item['price'] = $city->price;
				$lophocs[$city->item_id] = $item;
			}
			return $lophocs;
		}
		else
		{
			return FALSE;
		}
	}
	
	/*
	 * Lấy tất cả các lớp theo năm
	*/
	function ajaxget_lop_byYear($year)
	{
		$this->db->select('*');
		$this->db->from('lophoc');
		$this->db->order_by('id','desc');
		$this->db->where('YEAR(lophoc.nambatdau)',$year);
		$this->db->where('deleted',0);
		$this->db->where('status',1);
		$query = $this->db->get();
		//return $query->result_array();
		$lophocs = array();
		if($query->result()){
			$lophocs[0] = "Chọn lớp ...";
			foreach ($query->result() as $city) {
				$lophocs[$city->id] = $city->tenlop;
			}
			return $lophocs;
		}
		else
		{
			return FALSE;
		}
	}
	
	function ajaxget_monhoc_bylop($id_lop)
	{
		$this->db->select('lophoc_monhoc.*, monhoc.*');
		$this->db->from('lophoc_monhoc','monhoc');
		$this->db->join('monhoc','monhoc.id = lophoc_monhoc.id_mon');
		$this->db->where('monhoc.deleted',0);
		$this->db->where('monhoc.status',1);
		$this->db->where('lophoc_monhoc.id_lop',$id_lop);
		$query = $this->db->get();
		$lophocs = array();
		if($query->result()){
			$lophocs[0] = "Chọn môn ...";
			foreach ($query->result() as $city) {
				$lophocs[$city->id_mon] = $city->tenmon;
			}
			return $lophocs;
		}
		else
		{
			return FALSE;
		}
	
	}
	
	public function do_update()
	{
		$datas = $this->get_vattus();
		
		foreach ($datas as $data)
		{
			
			$mat19 = 'VT-'.date('y').'-';
			$idvt = $data['id'];
			$mavt = $this->auto_code_vattu($idvt);
			
			$data2 = array(
					'code' => $mat19.$mavt,
					'status' => 0,
			);
			
			$this->db->set($data2);
			$this->db->where('id', $idvt);
			$this->db->update('item');
		}
	}
	/*
	 * Lây item trong bang vt_chung_tu_item
	 */
	public function get_vt_chung_tu_item($item_id,$chung_tu_id)
	{
		$this->db->select('*');
		$this->db->from('vt_chung_tu_item');
		$this->db->where('item_id', $item_id);
		$this->db->where('chung_tu_id', $chung_tu_id);
		$query = $this->db->get();
		return $query->result_array();
	}
	
	public function get_vattus()
	{
		$this->db->select('*');
		$this->db->from('item');
		$query = $this->db->get();
		return $query->result_array();
	}	
	
	
	
	/* Đếm số phiếu xuất bởi user đăng nhập
	 * 
	 */
	public function count_all_billimport_by($status='')
	{
		$this->db->select('id');
		$this->db->from('vt_chung_tu');
		$this->db->where('type',1);
		//$this->db->where('user_id',$this->user->id);
		if($status != "")
		{
			$this->db->where('status',$status);
		}
		return $this->db->count_all_results();
	}
	
	
	public function count_all_billexport_by($status='')
	{
		$this->db->select('id');
		$this->db->from('vt_chung_tu');
		$this->db->where('type',2);
		//$this->db->where('user_id',$this->user->id);
		if($status != "")
		{
			$this->db->where('status',$status);
		}
		return $this->db->count_all_results();
	}
	/*
	 * Lấy các bản ghi bới được tạo bởi user đăng nhập
	 */
	public function get_list_billimport_by($limit,$start,$status='')
	{
		$this->db->select('vt_chung_tu.*');
		$this->db->from('vt_chung_tu');		
		$this->db->order_by('id','desc');
		$this->db->limit($limit, $start);
		$this->db->where('type',1);
		//$this->db->where('user_id',$this->user->id);
		if($status != "")
		{
			$this->db->where('status',$status);
		}
		$query = $this->db->get();
		return $query->result_array();
	}
	
	
	public function get_list_billexport_by($limit,$start,$status='')
	{
		$type = array(2,3);
		$this->db->select('*');
		$this->db->from('vt_chung_tu');
		$this->db->order_by('id','desc');
		$this->db->limit($limit, $start);
		$this->db->where_in('type',$type);
		//$this->db->where('user_id',$this->user->id);
		if($status != "")
		{
			$this->db->where('status',$status);
		}
		$query = $this->db->get();
		$rs = $query->result_array();
		$arr = array();
		foreach ($rs as $item)
		{
			$item['total'] = $this->get_total_bybill($item["id"]);
			/* if($item['type']==3)
			{
				$gv = $this->get_gv_byId($item['object_to_id']);
			}else {
				$gv = $this->get_gv_phutrachmon($item['id_monhoc']);
			}
			$item['gv'] = $gv[0]; */
			$arr[] = $item;
		}
		return $arr;
	}
	function get_mon_byId($id)
	{
		$this->db->select('monhoc.*');
		$this->db->from('monhoc');
		$this->db->where('monhoc.id',$id);
		/*$this->db->select('hocvien.*');
		 $this->db->from('hocvien');*/		
		$query = $this->db->get();
		return $query->result_array();
	}
	/**
	 * 
	 * @param int $id_mon
	 */
	function get_gv_phutrachmon($id_mon)
	{
		$rs = $this->get_mon_byId($id_mon);
		if($rs != null)
		{
			return $this->get_gv_byId($rs[0]['id_gv']);
		}
		return null;
	}
	function get_gv_byId($id)
	{
		$this->db->select('giaovien.*');
		$this->db->from('giaovien');		
		$this->db->where('giaovien.id',$id);		
		$query = $this->db->get();
		return $query->result_array();
		
	}
	/*
	 * Lấy tất cả vật tư
	 */
	public function get_all_vattu($type=null)
	{
		
		$this->db->select('vt_item.*, dvt.name as dvt');
		$this->db->from('vt_item');
		$this->db->join('dvt', 'dvt.id = vt_item.id_dvt', 'left');
		$this->db->order_by('vt_item.name','asc');
		$this->db->where('vt_item.deleted',0);
		$this->db->where('vt_item.status',1);
		if($type != null)
		{
			$this->db->where('vt_item.type',$type);
		}
		
		$query = $this->db->get();
		$rs = $query->result_array();
		$array = array();
		if($rs == null)
		{
			return null;
		}
		else
		{
			foreach($rs  as $item)
			{
				$item['price'] = $this->get_price_theItem($item['id']);
				$array[] = $item;
			}
			return $array;
		}
	}
	
	/*
	 * Lấy tất cả vật tư có trong kho
	*/
	public function get_all_vattu_in_kho($type=null)
	{
	
		$this->db->select('vt_item.*, dvt.name as dvt');
		$this->db->from('vt_item');
		$this->db->join('dvt', 'dvt.id = vt_item.id_dvt', 'left');
		$this->db->order_by('vt_item.name','asc');
		$this->db->where('vt_item.deleted',0);
		$this->db->where('vt_item.status',1);
		if($type != null)
		{
			$this->db->where('vt_item.type',$type);
		}
	
		$query = $this->db->get();
		$rs = $query->result_array();
		$array = array();
		if($rs == null)
		{
			return null;
		}
		else
		{
			foreach($rs  as $item)
			{
				$item['price'] = $this->get_price_theItem($item['id']);
				$array[] = $item;
			}
			return $array;
		}
	}
	
	//submit item to lock (status = 1)
	public function submit_item($item_id)
	{
		$data = array('status' => 1);
		$this->db->where('id', $item_id);
		$this->db->set($data);
		$this->db->update('vt_item');
		//$this->update_add_amount($item_id, $soluong);
		if($this->db->affected_rows() >= 0)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}
	
	// Lấy các item đã được duyệt (status =1)
	public function get_all_submit_items($limit,$start)
	{
		$this->db->select('vt_item.*, dvt.name as dvt');
		$this->db->from('vt_item');
		$this->db->join('dvt', 'dvt.id = vt_item.id_dvt', 'left');
		$this->db->order_by('id','desc');
		$this->db->limit($limit, $start);
		$this->db->where('deleted',0);
		$this->db->where('status',1);
		$query = $this->db->get();
		return $query->result_array();
	}	
	// Lây các item nháp (status = 0)
	public function get_all_draf_items($limit,$start)
	{
		$this->db->select('vt_item.*, dvt.name as dvt');
		$this->db->from('vt_item');
		$this->db->join('dvt', 'dvt.id = vt_item.id_dvt', 'left');
		$this->db->order_by('id','desc');
		$this->db->limit($limit, $start);
		$this->db->where('deleted',0);
		$this->db->where('status',0);
		$query = $this->db->get();
		return $query->result_array();
	}
	//Start Controller List vat tu
	public function get_list_vattu($limit, $start)
	{
		$this->db->select('vt_item.*, dvt.name as dvt');
		$this->db->from('vt_item');
		$this->db->join('dvt', 'dvt.id = vt_item.id_dvt', 'left');
		$this->db->order_by('id','desc');
		$this->db->limit($limit, $start);
		$query = $this->db->get();
		return $query->result_array();
	}
	
	public function get_vattu($id)
	{
		$this->db->select('*');
		$this->db->from('vt_item');
		$this->db->where('id',$id);
		$query = $this->db->get();
		return $query->row();
	}
	
	public function get_all_item_by_kho($khoid)
	{
		$this->db->select('vt_kho_item.*, vt_item.name, vt_item.type, dvt.name as dvt, dvt.id as id_dvt');
		$this->db->from('vt_kho_item','vt_item','dvt');
		$this->db->join('vt_item','vt_item.id = vt_kho_item.item_id');
		$this->db->join('dvt','dvt.id = vt_item.id_dvt');
		$this->db->where('vt_kho_item.kho_id',$khoid);
		$this->db->where('vt_kho_item.status !=',0);
		$query = $this->db->get();
		return $query->result_array();
	}
	
	public function count_all_vattu($status="")
	{
		$this->db->select('id');
		$this->db->from('vt_item');
		$this->db->where('deleted',0);
		if($status != "")
		{
			$this->db->where('status',$status);
		}
		return $this->db->count_all_results();
	}
	//Start Controller List Vat tu
	
	
	
	function get_dvt_name()
	{
		$this->db->select('*');
		$this->db->from('dvt');
		//$this->db->where('status',1);
		//$this->db->where('deleted',0);
		$this->db->order_by('id','ASC');		
		$query = $this->db->get();
		return $query->result();
	}
	
	// Lấy tất cả Danh mục
	function get_all_category()
	{
		$this->db->select('*');
		$this->db->from('vt_danh_muc');
		$this->db->order_by('name','ASC');
		$this->db->where('status',1);
		$query = $this->db->get();
		return $query->result();
	}
	
	// Lấy tất cả nguồn xuất xứ
	function get_all_source()
	{
		$this->db->select('*');
		$this->db->from('vt_xuat_xu');
		$this->db->order_by('name','ASC');
		$this->db->where('status',1);
		$query = $this->db->get();
		return $query->result();
	}
	
	function get_all_unit()
	{
		$this->db->select('*');
		$this->db->from('dvt');
		$this->db->order_by('id','DESC');
		$query = $this->db->get();
		return $query->result_array();
	}
	
	//Lấy thông tin đơn vị tính
	function get_unit($id)
	{
		$this->db->select('*');
		$this->db->from('dvt');
		$this->db->where('id',$id);
		$query = $this->db->get();
		return $query->row();
	}
	
	
	// Sửa Đơn vị tính
	public function edit_unit($id)
	{
		$fields = array(
				//'mahv' 			=> $this->input->post('mahv'),
				'name'			=> $this->input->post('name'),
				'code'			=> mb_strtoupper($this->input->post('code')),
				'note'			=> mb_strtoupper($this->input->post('note')),
				'status'		=> $this->input->post('status'),
				
		);
	
		$this->db->set($fields);
		$this->db->where('id', $id);
		$this->db->update('dvt');
	}
	
	// Thêm mới Đơn vị tính
	public function add_unit()
	{
		$fields = array(
				'name'			=> $this->input->post('name'),
				'code'			=> mb_strtoupper($this->input->post('code')),
				'note'			=> mb_strtoupper($this->input->post('note')),
				'status'		=> $this->input->post('status'),
		);
	
		$this->db->set($fields);
		$this->db->insert('dvt');
	}
	
	// Thêm mới Vật tư
	public function add_vattu()
	{
		$fields = array(
			'name'			=> $this->input->post('tenvt'),
			'mo_ta'			=> $this->input->post('mota'),
			'id_dvt'		=> $this->input->post('dvt'),
			'category_id'		=> $this->input->post('category'),
			'id_xuat_xu' 	=> $this->input->post('source'),
			'type'			=> $this->input->post('type'),
		);
		
		$this->db->set($fields);
		$this->db->insert('vt_item');
		
		//tao ma vattu
		$mat19 = 'VT-'.date('y').'-';
		$idvt = $this->db->insert_id();
		$mavt = $this->auto_code_vattu($idvt);
		
		$data2 = array(
				'code' => $mat19.$mavt,
		);
		
		$this->db->set($data2);
		$this->db->where('id', $idvt);
		$this->db->update('vt_item');
	}
	
	// Hàm này tự động tạo MAVT
	public function auto_code_vattu($idvt)
	{
		$i = 5;
		$len = strlen($idvt);
		$pre ='';
		for($j=0;$j<$i-$len;$j++)
		{
		$pre .= '0';
		}
		$mavt = $pre . "$idvt";
		return $mavt;
	}
	
	
	// Sửa thông tin Vật tư
	public function edit_vattu($id)
	{
		$fields = array(
				'name'			=> $this->input->post('tenvt'),
				'status'		=> 0,
				'id_dvt'		=> $this->input->post('dvt'),
				'mo_ta'			=> $this->input->post('mota'),
				'category_id'		=> $this->input->post('category'),
				'type'			=> $this->input->post('type'),
				'id_xuat_xu' 	=> $this->input->post('source'),
		);
	
	
		$this->db->set($fields);
	
		$this->db->where('id', $id);
		$this->db->update('vt_item');
	}
	
	// Nhập vật tư vào kho
	public function add_bill_import($results)
	{
		$this->load->helper('date');
		$date3 = str_replace('/', '-', $this->input->post('datetime'));
		$real_date = date('Y-m-d', strtotime($date3));
		$fields = array(
				'user_id'		=> $this->user->id,
				'id_kho'		=> $this->input->post('kho'),
				'type'			=> 1,
				'status'		=> 0,
				'name'          => $this->input->post('name'),
				'content' 		=> $this->input->post('content'),
				'created_date'	=> date('Y-m-d H:i:s'),
				'real_date' => $real_date
		);
		$this->db->set($fields);
		$this->db->insert('vt_chung_tu');
		$nhapxuat_id = $this->db->insert_id();
		
		//auto code order import
		$mat19 = 'HDVT-'.date('y').'-';
		$ordercode = $this->auto_code_vattu($nhapxuat_id);
			
		$data2 = array(
				'code' => $mat19.$ordercode,
		);
			
		$this->db->set($data2);
		$this->db->where('id', $nhapxuat_id);
		$this->db->update('vt_chung_tu');
		
		
		// Thực hiện thêm vật tư vào phiếu nhập
		foreach ($results as $result)
		{
			$soluong = $this->input->post('soluong_'.$result);
			$dongia = $this->input->post('dongia_'.$result);
			
			$this->item_detail($nhapxuat_id, $soluong, $dongia, $result,1,0);
			
		}
		return $nhapxuat_id;
		
	}
	
	//Lay thông tin phiếu
	public function get_bill_import_by_id($id)
	{
		$this->db->select('*');
		$this->db->from('vt_chung_tu');
		$this->db->where('id',$id);
		$query = $this->db->get();
		return $query->row();
	}
	
	public function get_obj_teacher($id)
	{
		$this->db->select('giaovien.id, giaovien.tengv,khoa.tenkhoa');
		$this->db->from('giaovien','khoa');
		$this->db->join('khoa','giaovien.id_khoa = khoa.id');
		$this->db->where('giaovien.id',$id);
		$query = $this->db->get();
		return $query->row();
	}
	// Lấy chi tiết các vật tư có trong phiếu nhập
	public function get_bill_import_detail_by_id($id)
	{
		$this->db->select('vt_item.name as itemname, vt_item.code,vt_chung_tu_item.item_id,vt_chung_tu_item.ps_tang, vt_chung_tu_item.ps_giam, vt_chung_tu.id_kho, vt_chung_tu_item.price, dvt.id as id_dvt, dvt.name as dvtname, vt_chung_tu_item.prop as prop');
		$this->db->from('vt_item','vt_chung_tu_item','vt_chung_tu','dvt');
		$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id = vt_item.id');
		$this->db->join('vt_chung_tu','vt_chung_tu.id = vt_chung_tu_item.chung_tu_id');
		$this->db->join('dvt','dvt.id = vt_item.id_dvt');
		$this->db->where('vt_chung_tu.id',$id);	
		$query = $this->db->get();
		return $query->result_array();
	}
	
	public function get_billdetail($id)
	{
		$this->db->select('vt_item.type,vt_item.name as itemname, vt_item.code,vt_chung_tu_item.item_id,vt_chung_tu_item.ps_tang, vt_chung_tu_item.price, dvt.name as dvtname');
		$this->db->from('vt_item','vt_chung_tu_item','vt_chung_tu','dvt');
		$this->db->join('vt_chung_tu_item','vt_chung_tu_item.item_id = vt_item.id');
		$this->db->join('vt_chung_tu','vt_chung_tu.id = vt_chung_tu_item.chung_tu_id');
		$this->db->join('dvt','dvt.id = vt_item.id_dvt');
		$this->db->where('vt_chung_tu.id',$id);
		$query = $this->db->get();
		return $query->result_array();
	}
	// Sửa Phiếu nhập vật tư
	public function edit_bill_import($id, $results)
	{		
		/*
		 * Edit tên và nội dung phiếu nhập
		 */
		$date3 = str_replace('/', '-', $this->input->post('datetime'));
		$real_date = date('Y-m-d', strtotime($date3));
		
		$fields = array(
				'name'			=> $this->input->post('name'),
				'content'		=> $this->input->post('content'),
				'real_date' => $real_date
		);
		
		$this->db->set($fields);
		$this->db->where('id', $id);
		$this->db->update('vt_chung_tu');
		
		// Xóa toàn bộ vật tư của phiếu nhập		
		$this->db->where('chung_tu_id', $id);
		$this->db->delete('vt_chung_tu_item');
		
		// Cập nhật mới
		foreach ($results as $result)
		{
			$soluong = $this->input->post('soluong_'.$result);
			$dongia = $this->input->post('dongia_'.$result); 
			
			$this->update_item_bill_import($id, $soluong, $dongia, $result);
			
		}
	}
	
	
	
	// them chi tiet vat tu trong phiếu nhập vừa sửa
	public function update_item_bill_import($bill_id, $soluong, $dongia, $itemid)
	{
		
		$fields = array(
				'item_id'			=> $itemid,
				'chung_tu_id'		=> $bill_id,
				'ps_tang'			=> $soluong,
				'price'				=> $dongia
		);
	
		$this->db->set($fields);
		$this->db->insert('vt_chung_tu_item'); 
	}
	
	public function edit_bill_export($id, $results)
	{
		//echo $id;exit();
		/*
		 * Edit tên và nội dung phiếu nhập
		*/
		$fields = array(
				'name'			=> $this->input->post('name'),
				'content'		=> $this->input->post('content'),
	
		);
	
		$this->db->set($fields);
		$this->db->where('id', $id);
		$this->db->update('vt_chung_tu');
		
		// delete item of phiếu xuât
		$this->db->where('chung_tu_id', $id);
		$this->db->delete('vt_chung_tu_item');
		
		// Cập nhật mới
		foreach ($results as $result)
		{
			$soluong = $this->input->post('soluong_'.$result);
			$dongia = $this->valite_price($this->input->post('dongia_'.$result));
			$prop = $this->valite_price($this->input->post('prop_'.$result));
			$this->update_item_bill_export($id, $soluong, $dongia, $result,$prop);
		}
	}
	
	// them chi tiet vat tu trong phiếu xuất vừa sửa
	public function update_item_bill_export($bill_id, $soluong, $dongia, $itemid,$prop)
	{
		$fields = array(
				'item_id'			=> $itemid,
				'chung_tu_id'		=> $bill_id,
				'ps_giam'			=> $soluong,
				'price'				=> $dongia,
				'prop'              => $prop
		);
	
		$this->db->set($fields);
		$this->db->insert('vt_chung_tu_item');
	}
	
	private function valite_price($price)
	{
		$result = 0;
		$result = str_replace(',', '', $price);
		return $result;
	}
	
	// Xuất kho (submit) - chính thức xuất kho
	public function xuatkho($id, $results=null)
	{
		// kiểm tra số lượng trong kho
		$flag = 0;
		/* remove kiểm tra số lương v1.0 này*/
		/*
		foreach ($results as $result)
		{
			$amount = $this->get_vattu($result);
			//var_dump($amount);
			$itemxuatnhap = $this->get_vt_chung_tu_item($result,$id);
			//var_dump($itemxuatnhap[0]);
			if($amount->amount < $itemxuatnhap[0]['amount'])
			{
				$flag = 1;
			}
			//exit();
		}
		*/
		if($flag == 0)
		{
			$data = array('status' => 1);
			$this->db->where('id', $id);
			$this->db->set($data);
			$this->db->update('vt_chung_tu');
			$dataupdate =  $this->get_bill_import_detail_by_id($id);
			foreach ($dataupdate as $data)
			{
				$this->update_sub_amount($data['item_id'],$data['ps_giam']);
			}
		}
		else
		{
			return false;
		}
	}
	// Nhập kho (save and submit)
	public function nhapkho($id, $results)
	{
		$this->db->where('chung_tu_id', $id);
		$this->db->delete('vt_chung_tu_item');
		
		foreach ($results as $result)
		{
			$soluong = $this->input->post('soluong_'.$result);
			$dongia = $this->input->post('dongia_'.$result);
			$this->update_item_bill_import($id, $soluong, $dongia, $result);
		}
		$this->submit_bill_import($id);	
	}
	
	
	public function update_sub_amount($id,$amount)
	{
		$this->db->where('id', $id);
		$this->db->set('amount', 'amount-'.$amount, FALSE);
		$this->db->update('vt_item');
	}
	
	
	
	// them chi tiet vat tu trong phieu vua tao
	public function item_detail($nhapxuat_id, $soluong, $dongia, $result, $type,$prop)
	{
		if($type == 1) // Nhập
		{
			$fields = array(
					'item_id'			=> $result,
					'chung_tu_id'		=> $nhapxuat_id,
					'ps_tang'			=> $soluong,
					'price'				=> $dongia,
					'prop'              => $prop
			);
		}
		else // Xuất
		{
			$fields = array(
					'item_id'			=> $result,
					'chung_tu_id'		=> $nhapxuat_id,
					'ps_giam'			=> $soluong,
					'price'				=> $dongia,
					'prop'              => $prop
			);
		}
		
		$this->db->set($fields);
		$this->db->insert('vt_chung_tu_item');
	}
	
	function getLastInserted() {
	    return $this->db->insert_id();
	}
	
	public function check_code()
	{
		$code = $this->input->post('mavt');
        $query =  "
			SELECT id, code
			FROM vt_item WHERE code ='$code' 
			";
        $result = $this->db->query($query);
        if($result->num_rows() >= 1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    public function search_vattu($keyword)
    {
    
    	$this->db->select('vt_item.*, dvt.name as dvt');
    	$this->db->from('vt_item');
    	$this->db->join('dvt', 'dvt.id = vt_item.id_dvt', 'left');
    	$this->db->order_by('vt_item.name','asc');
    	$this->db->like('vt_item.name',$keyword);
    	$this->db->or_like('vt_item.code',$keyword);
    	
    	$query = $this->db->get();
    	$rs = $query->result_array();
    	$array = array();
    	if($rs == null)
    	{
    		return null;
    	}
    	else
    	{
    		foreach($rs  as $item)
    		{
    			$item['price'] = $this->get_price_theItem($item['id']);
    			$array[] = $item;
    		}
    		return $array;
    	}
    }
    
    // submit danh muc
    public function submit_category($id=null)
    {
    	$data = array('status' => 1);
    	$this->db->where('id', $id);
    	$this->db->set($data);
    	$this->db->update('vt_danh_muc');
    	if($this->db->affected_rows() >= 0)
    	{
    		return TRUE;
    	}
    	else
    	{
    		return FALSE;
    	}
    }
    
    // submit danh muc
    public function submit_kho($id=null)
    {
    	$data = array('status' => 1);
    	$this->db->where('id', $id);
    	$this->db->set($data);
    	$this->db->update('vt_kho');
    	if($this->db->affected_rows() >= 0)
    	{
    		return TRUE;
    	}
    	else
    	{
    		return FALSE;
    	}
    }
    
    // submit danh muc
    public function submit_xuat_xu($id=null)
    {
    	$data = array('status' => 1);
    	$this->db->where('id', $id);
    	$this->db->set($data);
    	$this->db->update('vt_xuat_xu');
    	if($this->db->affected_rows() >= 0)
    	{
    		return TRUE;
    	}
    	else
    	{
    		return FALSE;
    	}
    }
    
    //submit lock Phiếu nhập vattu
    public function submit_bill_import($id, $type)
    {
    	$data = array('status' => 1);
    	$this->db->where('id', $id);
    	$this->db->set($data);
    	$this->db->update('vt_chung_tu');
    
    	$dataupdate =  $this->get_bill_import_detail_by_id($id);
    	foreach ($dataupdate as $data)
    	{
    		if($type == 1)
    		{
    			$this->update_add_amount($data['item_id'],$data['id_kho'], $data['ps_tang'],1);
    		}
    		else{
    			$this->update_add_amount($data['item_id'],$data['id_kho'], $data['ps_giam'],2);
    		}
    	}
    
    	if($this->db->affected_rows() >= 0)
    	{
    		return TRUE;
    	}
    	else
    	{
    		return FALSE;
    	}
    
    }
    
    // Cập nhật số lượng trong kho khi nhập hoặc xuất
    public function update_add_amount($id, $khoid, $amount, $type)
    {
    	$this->db->where('item_id', $id);
    	$this->db->where('kho_id', $khoid);
    	if($type == 1)
    	{
    		$this->db->set('amount', 'amount+'.$amount, FALSE);
    	}
    	else
    	{
    		$this->db->set('amount', 'amount-'.$amount, FALSE);
    	}
    	$this->db->update('vt_kho_item');
    }
}

/* Location: ./application/*/